﻿
layui.use(['form', 'comment'], function () {
    var comment = layui.comment
        , $ = layui.$
        , table = layui.table
        , form = layui.form;

    //渲染
    comment.Table_Rander({
        elem: '#power'
        , url: ApiUrl.LanbtPower.Search.url //数据接口
        , cols: [[ //表头
            { type: 'checkbox', fixed: 'left' },
            , { field: 'id', title: 'ID', hide: true }
            , { field: 'sort', title: '序号', width: 70 }
            , {
                field: 'isEnable', title: '状态', width: 100, templet: function (d) {
                    let checked = d.isEnable ? "checked" : "";
                    return '<input type="checkbox" name="isEnable" lay-skin="switch" lay-text="启用|禁用" ' + checked + ' disabled >'
                }
            }
            , {
                field: 'isMenuShow', title: '显示菜单', width: 100, templet: function (d) {
                    let checked = d.isMenuShow ? "checked" : "";
                    return '<input type="checkbox" name="isMenuShow" lay-skin="switch" lay-text="显示|隐藏" ' + checked + ' disabled >'
                }
            }
            , {
                field: 'name', title: '权限名', minWidth:120, templet: function (d) {
                    if (d.iconUrl != null && d.iconUrl.length > 0) {
                        return '<div><i class="layui-icon ' + d.iconUrl + '" />&nbsp;' + d.name + '</div>'
                    } else {
                        return '<div>' + d.name + '</div>'
                    }
                }
            }
            , { field: 'parentID', title: '父节点ID', minWidth: 90 }
            , { field: 'parentName', title: '父节点', minWidth: 120 }
            , { field: 'powerTypeName', title: '节点类型', minWidth: 100 }
            , { field: 'menuCode', title: '菜单编码', minWidth: 200 }
            , { field: 'lineUrl', title: '页面地址', minWidth: 200 }
            , { field: 'descript', title: '说明', minWidth: 300 }
            , { field: 'createTime', title: '创建时间', minWidth:150, templet: '<div>{{layui.util.toDateString(d.createTime,\'yyyy-MM-dd HH:mm\')}}</div>' }
            , { field: 'modificaTime', title: '修改时间', minWidth: 150, templet: '<div>{{layui.util.toDateString(d.modificaTime,\'yyyy-MM-dd HH:mm\')}}</div>' }
            , { fixed: 'right', minWidth: 250, title: '操作', align: 'center', toolbar: '#line_tool' }
        ]]
        , toolbar: '#heard_tool'
        , done: function (res, curr, count) {
            comment.CheckPermission();
        }
    });

    //头部工具栏事件
    table.on('toolbar(power)', function (obj) {
        var checkStatus = table.checkStatus(obj.config.id);
        switch (obj.event) {
            case 'search':
                var data = form.val('lanbt-head-tool');
                table.reload("power", {
                    where: data
                    , done: function () {
                        form.val('lanbt-head-tool', data);
                        comment.CheckPermission();
                    }
                    , page: {
                        pageIndex: 1
                    }
                })
                break;
            case 'add':
                layer.open({
                    type: 1
                    , resize: false
                    , title: '添加权限'
                    , content: $('#power-template').html()
                    , shade: 0.8//遮幕
                    , area: ['600px', '79%']//定义宽高
                    , success: function (layero, index) {

                        form.on('submit(save)', function (data) {

                            comment._ACP(ApiUrl.LanbtPower.Insert, JSON.stringify(data.field), function (res) {
                                if (res.success) {
                                    comment.Success(res.result);
                                    setTimeout(function () {
                                        table.reload('power');
                                        layer.close(index);
                                    }, 200)
                                } else {
                                    comment.Error(res.errorMsg);
                                }
                            })

                        })
                    }
                })
                break;
            case 'batchDel':
                var checkStatus = table.checkStatus('power');
                var count = checkStatus.data.length;
                if (count == 0) {
                    layer.msg('至少选择一条数据');
                }
                else {
                    layer.confirm('确定删除' + count + '条权限吗？（子目录也会一起删除，谨慎操作）', function (index) {

                        let ids = [];
                        checkStatus.data.forEach(function (item) {
                            ids.push(item.id);
                        })
                        //do something
                        comment._ACP(ApiUrl.LanbtPower.DeleteManyByIds, JSON.stringify(ids), function (res) {
                            if (res.success) {
                                comment.Success(res.result)
                                table.reload("power");
                            } else {
                                comment.Error(res.errorMsg)
                            }
                        })
                    });
                }
                break;
        };
    });

    //监听行工具事件
    table.on('tool(power)', function (obj) { //注：tool 是工具条事件名，power 是 table 原始容器的属性 lay-filter="对应的值"
        var data = obj.data //获得当前行数据
            , layEvent = obj.event; //获得 lay-event 对应的值
        switch (layEvent) {
            case 'addChildren':
                layer.open({
                    type: 1
                    , resize: false
                    , title: '【' + data.name + '】添加子项'
                    , content: $('#power-template').html()
                    , shade: 0.8//遮幕
                    , area: ['600px', '79%']//定义宽高
                    , success: function (layero, index) {

                        //获取单个权限信息
                        comment._ACP(ApiUrl.LanbtPower.GetById, { id: data.id }, function (res) {
                            if (res.success) {
                                parentIDSelect.append(res.result.sort.toString().split(','))
                            } else {
                                comment.Error(res.errorMsg);
                            }
                        })

                        //修改提交
                        form.on('submit(save)', function (data) {

                            comment._ACP(ApiUrl.LanbtPower.Insert, JSON.stringify(data.field), function (res) {
                                if (res.success) {
                                    comment.Success(res.result);
                                    setTimeout(function () {
                                        table.reload('power', null, true);
                                        layer.close(index);
                                    }, 200)
                                } else {
                                    comment.Error(res.errorMsg);
                                }
                            })

                        })
                    }
                })
                break;
            case 'showOrHide':
                comment._ACP(ApiUrl.LanbtPower.UpdateIsMenuShow, JSON.stringify(data.id), function (res) {
                    if (res.success) {
                        comment.Success(res.result);
                        table.reload("power");
                    } else {
                        comment.Error(res.errorMsg);
                    }
                })
                break;
            case 'updateEnable':
                comment._ACP(ApiUrl.LanbtPower.UpdateIsEnable, JSON.stringify(data.id), function (res) {
                    if (res.success) {
                        comment.Success(res.result);
                        table.reload("power");
                    } else {
                        comment.Error(res.errorMsg);
                    }
                })
                break;
            case 'delete':
                layer.confirm('确定要删除权限【' + data.name + '】吗？（子目录也会一起删除，谨慎操作）', function (index) {
                    comment._ACP(ApiUrl.LanbtPower.DeleteOneById, JSON.stringify(data.id), function (res) {
                        if (res.success) {
                            comment.Success(res.result);
                            table.reload("power");
                        } else {
                            comment.Error(res.errorMsg)
                        }
                    })
                })
                break;
            case 'edit':
                layer.open({
                    type: 1
                    , resize: false
                    , title: '编辑权限【' + data.name+'】'
                    , content: $('#power-template').html()
                    , shade: 0.8//遮幕
                    , area: ['600px', '79%']//定义宽高
                    , success: function (layero, index) {
                        //获取单个权限信息
                        comment._ACP(ApiUrl.LanbtPower.GetById, { id: data.id }, function (res) {
                            if (res.success) {
                                form.val('form', res.result);
                                parentIDSelect.append(res.result.parentID.toString().split(','))
                                powerTypeSelect.append(res.result.powerType.toString().split(','))
                            } else {
                                comment.Error(res.errorMsg);
                            }
                        })

                        //修改提交
                        form.on('submit(save)', function (data) {

                            comment._ACP(ApiUrl.LanbtPower.Update, JSON.stringify(data.field), function (res) {
                                if (res.success) {
                                    comment.Success(res.result);
                                    setTimeout(function () {
                                        table.reload('power', null,true);
                                        layer.close(index);
                                    }, 200)
                                } else {
                                    comment.Error(res.errorMsg);
                                }
                            })

                        })
                    }
                })
                break;
        }
    });
})